<?php

include_once 'db/Crud.php';
class Usuario extends Crud {
    protected $table = "usuario";
    private $nome;
    private $dataDeNascimento;
    private $naturalidade;
    private $endereco;
    private $complemento;
    private $bairro;
    private $cidade;
    private $estado;
    private $telefone;
    private $rg;
    private $estadoRg;
    private $cpf;
    private $sus;
    private $mae;
    private $pai;
    private $dataDeEntrada;
    private $dataDeDesligamento;
    private $status;
    private $idFuncionario;
    private $dataDeAtualizacao;
    private $tipo;
    private $parentesco;
    private $responsavel;
    private $deficiencia;
    
    public function getDeficiencia() {
        return $this->deficiencia;
    }

    public function setDeficiencia($deficiencia) {
        $this->deficiencia = $deficiencia;
    }

    

    public function getParentesco() {
        return $this->parentesco;
    }

    public function getResponsavel() {
        return $this->responsavel;
    }

    public function setParentesco($parentesco) {
        $this->parentesco = $parentesco;
    }

    public function setResponsavel($responsavel) {
        $this->responsavel = $responsavel;
    }

    

    public function getTipo() {
        return $this->tipo;
    }

    public function setTipo($tipo) {
        $this->tipo = $tipo;
    }

        public function getEstadoRg() {
        return $this->estadoRg;
    }

    public function setEstadoRg($estadoRg) {
        $this->estadoRg = $estadoRg;
    }

        
    public function getMae() {
        return $this->mae;
    }

    public function getPai() {
        return $this->pai;
    }

    public function setMae($mae) {
        $this->mae = $mae;
    }

    public function setPai($pai) {
        $this->pai = $pai;
    }

        
    public function getTable() {
        return $this->table;
    }

    public function getNome() {
        return $this->nome;
    }

    public function getDataDeNascimento() {
        return $this->dateToBR($this->dataDeNascimento);
    }

    public function getNaturalidade() {
        return $this->naturalidade;
    }

    public function getEndereco() {
        return $this->endereco;
    }

    public function getComplemento() {
        return $this->complemento;
    }

    public function getBairro() {
        return $this->bairro;
    }

    public function getCidade() {
        return $this->cidade;
    }

    public function getEstado() {
        return $this->estado;
    }

    public function getTelefone() {
        return $this->telefone;
    }

    public function getRg() {
        return $this->rg;
    }

    public function getCpf() {
        return $this->cpf;
    }

    public function getSus() {
        return $this->sus;
    }

    public function getDataDeEntrada() {
        return $this->dataDeEntrada;
    }

    public function getDataDeDesligamento() {
        return $this->dataDeDesligamento;
    }

    public function getStatus() {
        return $this->status;
    }

    public function getIdFuncionario() {
        return $this->idFuncionario;
    }

    public function getDataDeAtualizacao() {
        return $this->dataDeAtualizacao;
    }

    public function setTable($table) {
        $this->table = $table;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }

    public function setDataDeNascimento($dataDeNascimento) {
        $this->dataDeNascimento = $this->dateToUS($dataDeNascimento) ;
    }

    public function setNaturalidade($naturalidade) {
        $this->naturalidade = $naturalidade;
    }

    public function setEndereco($endereco) {
        $this->endereco = $endereco;
    }

    public function setComplemento($complemento) {
        $this->complemento = $complemento;
    }

    public function setBairro($bairro) {
        $this->bairro = $bairro;
    }

    public function setCidade($cidade) {
        $this->cidade = $cidade;
    }

    public function setEstado($estado) {
        $this->estado = $estado;
    }

    public function setTelefone($telefone) {
        $this->telefone = $telefone;
    }

    public function setRg($rg) {
        $this->rg = $rg;
    }

    public function setCpf($cpf) {
        $this->cpf = $cpf;
    }

    public function setSus($sus) {
        $this->sus = $sus;
    }

    public function setDataDeEntrada($dataDeEntrada) {
        $this->dataDeEntrada = $this->dateToUS($dataDeEntrada);
    }

    public function setDataDeDesligamento($dataDeDesligamento) {
        $this->dataDeDesligamento = $dataDeDesligamento;
    }

    public function setStatus($status) {
        $this->status = $status;
    }

    public function setIdFuncionario($idFuncionario) {
        $this->idFuncionario = $idFuncionario;
    }

    public function setDataDeAtualizacao($dataDeAtualizacao) {
        $this->dataDeAtualizacao = $dataDeAtualizacao;
    }

        
    public function insert() {
      $sql = "INSERT INTO $this->table (usu_nome, usu_data_de_nasc, usu_naturalidade, usu_endereco, usu_complemento, usu_bairro, usu_cidade, usu_estado, usu_telefone, usu_rg, usu_estado_rg, usu_cpf, usu_sus, usu_mae, usu_pai, usu_tipo, usu_data_de_entrada, usu_fun_id, usu_data_de_atualizacao, usu_parentesco, usu_responsavel, usu_deficiencia )VALUES (:nome, :dataDeNascimento, :naturalidade, :endereco, :complemento, :bairro, :cidade, :estado, :telefone, :rg, :estadoRg, :cpf, :sus, :mae, :pai, :tipo, :dataDeEntrada, :idFuncionario, :dataDeAtualizacao, :parentesco, :responsavel, :deficiencia )";
      $stmt = Db::prepare($sql);
      $stmt->bindParam(':nome', $this->nome);
      $stmt->bindParam(':dataDeNascimento', $this->dataDeNascimento);
      $stmt->bindParam(':naturalidade', $this->naturalidade);
      $stmt->bindParam(':endereco', $this->endereco);
      $stmt->bindParam(':complemento', $this->complemento);
      $stmt->bindParam(':bairro', $this->bairro);
      $stmt->bindParam(':cidade', $this->cidade);
      $stmt->bindParam(':estado', $this->estado);
      $stmt->bindParam(':telefone', $this->telefone);
      $stmt->bindParam(':rg', $this->rg);
      $stmt->bindParam(':estadoRg', $this->estadoRg);
      $stmt->bindParam(':cpf', $this->cpf);
      $stmt->bindParam(':sus', $this->sus);
      $stmt->bindParam(':mae', $this->mae);
      $stmt->bindParam(':pai', $this->pai);
      $stmt->bindParam(':tipo', $this->tipo);
      $stmt->bindParam(':dataDeAtualizacao', $this->dataDeAtualizacao);
      $stmt->bindParam(':dataDeEntrada', $this->dataDeEntrada);
      $stmt->bindParam(':idFuncionario', $this->idFuncionario);
      $stmt->bindParam(':parentesco', $this->parentesco);
      $stmt->bindParam(':responsavel', $this->responsavel);
      $stmt->bindParam(':deficiencia', $this->deficiencia);
      return $stmt->execute();
      
    }

    public function update($id) {
        $sql = "UPDATE $this->table SET usu_nome = :nome, usu_data_de_nasc = :dataDeNascimento, usu_naturalidade = :naturalidade, usu_endereco = :endereco, usu_complemento = :complemento, usu_bairro = :bairro, usu_cidade = :cidade, usu_estado = :estado, usu_telefone = :telefone, usu_rg = :rg, usu_cpf = :cpf, usu_sus = :sus, usu_data_de_desligamento = :dataDeDesligamento, usu_status = :status, usu_fun_id = :idFuncionario, usu_data_de_atualizacao = :dataDeAtualizacao, usu_deficiencia = :deficiencia WHERE id = :id";
        $stmt = Db::prepare($sql);
        $stmt->bindParam(':nome', $this->nome);
        $stmt->bindParam(':dataDeNascimento', $this->dataDeNascimento);
        $stmt->bindParam(':naturalidade', $this->naturalidade);
        $stmt->bindParam(':endereco', $this->endereco);
        $stmt->bindParam(':complemento', $this->complemento);
        $stmt->bindParam(':bairro', $this->bairro);
        $stmt->bindParam(':cidade', $this->cidade);
        $stmt->bindParam(':estado', $this->estado);
        $stmt->bindParam(':telefone', $this->telefone);
        $stmt->bindParam(':rg', $this->rg);
        $stmt->bindParam(':estadoRg', $this->estadoRg);
        $stmt->bindParam(':cpf', $this->cpf);
        $stmt->bindParam(':sus', $this->sus);
        $stmt->bindParam(':mae', $this->mae);
        $stmt->bindParam(':pai', $this->pai);
        $stmt->bindParam(':dataDeEntrada', $this->dataDeEntrada);
        $stmt->bindParam(':dataDeDesligamento', $this->dataDeDesligamento);
        $stmt->bindParam(':status', $this->status);
        $stmt->bindParam(':idFuncionario', $this->idFuncionario);
        $stmt->bindParam(':dataDeAtualiacao', $this->dataDeAtualizacao);
        $stmt->bindParam(':deficiencia', $this->deficiencia);
        $stmt->bindParam(':id', $id);
        return $stmt->execute();
    }
    
    function buscarusuario($valor) {
        $sql = "SELECT usu_nome, usu_status, usu_tipo, id, usu_sus FROM $this->table WHERE usu_nome LIKE :valor AND usu_tipo = 1 AND usu_status= 1 ";
        $stmt = Db::prepare($sql);
        $filtro = array(":valor" => "%".$valor."%");
        $stmt->execute($filtro);
        return $stmt->fetchAll(PDO::FETCH_CLASS);
        
    }
    
    function listausuarios() {
        $sql = "SELECT usuario.usu_nome, usuario.usu_status, usuario.usu_tipo, usuario.id as idusuario, usuario.usu_sus FROM $this->table  WHERE usu_tipo = 1 AND usu_status= 1 ORDER BY usu_nome ASC ";
        $stmt = Db::prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_CLASS);
    }
    
    function listanomeusuario($id) {
        $sql = "SELECT usu_nome, usu_status, usu_tipo FROM $this->table WHERE usu_tipo = 1 AND usu_status= 1 AND id = $id ";
        $stmt = Db::prepare($sql);
        $stmt->bindParam(':id', $id);
        $stmt->execute();
        return $stmt->fetch();
    }
    
    function buscandousuario($valor) {
        
        $sql = "SELECT usu_nome, usu_status, usu_tipo, id, usu_sus FROM $this->table WHERE usu_nome LIKE :valor AND usu_status= 1 ";
        $stmt = Db::prepare($sql);
        $filtro = array(":valor" => "%".$valor."%");
        $stmt->execute($filtro);
        return $stmt->fetchAll(PDO::FETCH_CLASS);
        
    }
    
    function buscaid($sus) {
        $sql  = "SELECT id, usu_nome FROM $this->table WHERE usu_sus= :sus";
        $stmt = Db::prepare($sql);
        $stmt->bindParam(':sus', $sus);
        $stmt->execute();
        return $stmt->fetch();
        
    }
    
    function buscahistorico($valor) {
        
        $sql = "SELECT usu_nome, usu_status, usu_tipo, id, usu_sus FROM $this->table WHERE usu_nome LIKE :valor AND usu_status= 1";
        $stmt = Db::prepare($sql);
        $filtro = array(":valor" => "%".$valor."%");
        $stmt->execute($filtro);
        return $stmt->fetchAll(PDO::FETCH_CLASS);
        
    }
    

}
